library(GENIE3)
library(doParallel)
library(igraph)
library(tidyverse)
library(DT)
library(reticulate)
library(learn2count)
library(rbenchmark)
library(reshape2)
library(gridExtra)
library(DiagrammeR)
source("dropo.R")
source("generate_adjacency.R")
source("adj_cutoff.R")
source("simmetric.R")
source("pscores.R")
source("plotg.R")
source("compare_consensus.R")
source("earlyj.R")
DiagrammeR::grViz("
digraph biological_workflow {
# Set up the graph attributes
graph [layout = dot, rankdir = TB]
# Define consistent node styles
node [shape = rectangle, style = filled, color = lightblue, fontsize = 12]
# Define nodes for each step
StartNode [label = 'Biological String Regulatory Network', shape = oval, color = forestgreen, fontcolor = black]
AdjacencyMatrix [label = 'Create Adjacency Matrix', shape = rectangle, color = lightblue]
SimulateData [label = 'Simulate Single-Cell Data', shape = rectangle, color = lightyellow]
# Reconstruction using Three Packages
GENIE3Step [label = 'GENIE3: Calculate Gene Weights', shape = rectangle, color = lightpink]
GRNBoostStep [label = 'GRNBoost2: Calculate Gene Weights', shape = rectangle, color = lightpink]
Learn2CountStep [label = 'learn2count: Calculate Gene Weights', shape = rectangle, color = lightpink]
# Generate Adjacency Matrices for Each Package
GENIE3Adj [label = 'GENIE3: Generate Adjacency Matrix', shape = rectangle, color = khaki]
GRNBoostAdj [label = 'GRNBoost2: Generate Adjacency Matrix', shape = rectangle, color = khaki]
Learn2CountAdj [label = 'learn2count: Generate Adjacency Matrix', shape = rectangle, color = khaki]
# Symmetrize Step
Symmetrize [label = 'Symmetrize Adjacency Matrix', shape = rectangle, color = lightyellow]
# Comparison with Ground Truth
Compare [label = 'Compare with Ground Truth Adjacency', shape = rectangle, color = salmon]
# Analysis and Visualization
Analysis [label = 'Analysis and Visualization', shape = rectangle, color = lightcoral]
# Define the workflow structure
StartNode -> AdjacencyMatrix
AdjacencyMatrix -> SimulateData
SimulateData -> GENIE3Step
SimulateData -> GRNBoostStep
SimulateData -> Learn2CountStep
GENIE3Step -> GENIE3Adj
GRNBoostStep -> GRNBoostAdj
Learn2CountStep -> Learn2CountAdj
GENIE3Adj -> Symmetrize
GRNBoostAdj -> Symmetrize
Learn2CountAdj -> Symmetrize
Symmetrize -> Compare
Compare -> Analysis
}
")
Load data
adjm <- read.table("./../data/adjacency_matrix.csv", header = T, row.names = 1, sep = ",") %>% as.matrix()
link_list_genie3_list <- readRDS("./../analysis/genie3_network_list.RDS")
elink_list_genie3_list <- readRDS("./../analysis/early_genie3_network_list.RDS")
all_grn_links <- readRDS("./../analysis/grnboost2_network_list.RDS")
Early Join
elink_list_genie3_list <- simmetric(elink_list_genie3_list, weight_function = "mean")
elink_list_genie3_list[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 simmetric output")
adj_matrix_list <- generate_adjacency(elink_list_genie3_list)
adj_matrix_list[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 adjacency")
adj_matrix_list <- adj_cutoff(adj_matrix_list, weight_quantile = 0.80)
adj_matrix_list$binary_matrices[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 adjacency")
scores <- pscores(adjm, adj_matrix_list$binary_matrices)
print(scores$Jaccard_Heatmap)

print(scores$Metrics_Barplot)

scores$Metrics_Results %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "scores")
plots <- plotg(adj_matrix_list$binary_matrices)

ajm_compared <- compare_consensus(adj_matrix_list$binary_matrices, adjm)


Late Join
link_list_genie3_list <- simmetric(link_list_genie3_list, weight_function = "mean")
link_list_genie3_list[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 simmetric output")
adj_matrix_list <- generate_adjacency(link_list_genie3_list)
saveRDS(link_list_genie3_list, "./../analysis/genie3_adjacency_matrices.RDS")
adj_matrix_list[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 adjacency")
adj_matrix_list <- adj_cutoff(adj_matrix_list, weight_quantile = 0.80)
adj_matrix_list$binary_matrices[[1]] %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "GENIE3 adjacency")
scores <- pscores(adjm, adj_matrix_list$binary_matrices)
print(scores$Jaccard_Heatmap)

print(scores$Metrics_Barplot)

scores$Metrics_Results %>%
datatable(extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv', 'excel'),
scrollX = TRUE,
pageLength = 10),
caption = "scores")
plots <- plotg(adj_matrix_list$binary_matrices)

ajm_compared <- compare_consensus(adj_matrix_list$binary_matrices, adjm)


compared_scores <- pscores(adjm,list(ajm_compared$Consensus_Matrix))
print(compared_scores$Jaccard_Heatmap)

print(compared_scores$Metrics_Barplot)
